/*!-----------------------------------------------------------------------------
 * Copyright (c) Microsoft Corporation. All rights reserved.
 * monaco-languages version: 1.6.0(858705e74270e53559a241fdee187e7a6ae53b23)
 * Released under the MIT license
 * https://github.com/Microsoft/monaco-languages/blob/master/LICENSE.md
 *-----------------------------------------------------------------------------*/
define("vs/basic-languages/powershell/powershell", [
  "require",
  "exports",
], function (e, n) {
  "use strict";
  Object.defineProperty(n, "__esModule", { value: !0 }),
    (n.conf = {
      wordPattern:
        /(-?\d*\.\d\w*)|([^\`\~\!\@\#%\^\&\*\(\)\=\+\[\{\]\}\\\|\;\:\'\"\,\.\<\>\/\?\s]+)/g,
      comments: { lineComment: "#", blockComment: ["<#", "#>"] },
      brackets: [
        ["{", "}"],
        ["[", "]"],
        ["(", ")"],
      ],
      autoClosingPairs: [
        { open: "{", close: "}" },
        { open: "[", close: "]" },
        { open: "(", close: ")" },
        { open: '"', close: '"', notIn: ["string"] },
        { open: "'", close: "'", notIn: ["string", "comment"] },
      ],
      surroundingPairs: [
        { open: "{", close: "}" },
        { open: "[", close: "]" },
        { open: "(", close: ")" },
        { open: '"', close: '"' },
        { open: "'", close: "'" },
      ],
      folding: {
        markers: {
          start: new RegExp("^\\s*#region\\b"),
          end: new RegExp("^\\s*#endregion\\b"),
        },
      },
    }),
    (n.language = {
      defaultToken: "",
      ignoreCase: !0,
      tokenPostfix: ".ps1",
      brackets: [
        { token: "delimiter.curly", open: "{", close: "}" },
        { token: "delimiter.square", open: "[", close: "]" },
        { token: "delimiter.parenthesis", open: "(", close: ")" },
      ],
      keywords: [
        "begin",
        "break",
        "catch",
        "class",
        "continue",
        "data",
        "define",
        "do",
        "dynamicparam",
        "else",
        "elseif",
        "end",
        "exit",
        "filter",
        "finally",
        "for",
        "foreach",
        "from",
        "function",
        "if",
        "in",
        "param",
        "process",
        "return",
        "switch",
        "throw",
        "trap",
        "try",
        "until",
        "using",
        "var",
        "while",
        "workflow",
        "parallel",
        "sequence",
        "inlinescript",
        "configuration",
      ],
      helpKeywords:
        /SYNOPSIS|DESCRIPTION|PARAMETER|EXAMPLE|INPUTS|OUTPUTS|NOTES|LINK|COMPONENT|ROLE|FUNCTIONALITY|FORWARDHELPTARGETNAME|FORWARDHELPCATEGORY|REMOTEHELPRUNSPACE|EXTERNALHELP/,
      symbols: /[=><!~?&%|+\-*\/\^;\.,]+/,
      escapes:
        /`(?:[abfnrtv\\"'$]|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,
      tokenizer: {
        root: [
          [
            /[a-zA-Z_][\w-]*/,
            { cases: { "@keywords": { token: "keyword.$0" }, "@default": "" } },
          ],
          [/[ \t\r\n]+/, ""],
          [/^:\w*/, "metatag"],
          [
            /\$(\{((global|local|private|script|using):)?[\w]+\}|((global|local|private|script|using):)?[\w]+)/,
            "variable",
          ],
          [/<#/, "comment", "@comment"],
          [/#.*$/, "comment"],
          [/[{}()\[\]]/, "@brackets"],
          [/@symbols/, "delimiter"],
          [/\d*\.\d+([eE][\-+]?\d+)?/, "number.float"],
          [/0[xX][0-9a-fA-F_]*[0-9a-fA-F]/, "number.hex"],
          [/\d+?/, "number"],
          [/[;,.]/, "delimiter"],
          [/\@"/, "string", '@herestring."'],
          [/\@'/, "string", "@herestring.'"],
          [
            /"/,
            {
              cases: {
                "@eos": "string",
                "@default": { token: "string", next: '@string."' },
              },
            },
          ],
          [
            /'/,
            {
              cases: {
                "@eos": "string",
                "@default": { token: "string", next: "@string.'" },
              },
            },
          ],
        ],
        string: [
          [
            /[^"'\$`]+/,
            {
              cases: {
                "@eos": { token: "string", next: "@popall" },
                "@default": "string",
              },
            },
          ],
          [
            /@escapes/,
            {
              cases: {
                "@eos": { token: "string.escape", next: "@popall" },
                "@default": "string.escape",
              },
            },
          ],
          [
            /`./,
            {
              cases: {
                "@eos": { token: "string.escape.invalid", next: "@popall" },
                "@default": "string.escape.invalid",
              },
            },
          ],
          [
            /\$[\w]+$/,
            {
              cases: {
                '$S2=="': { token: "variable", next: "@popall" },
                "@default": { token: "string", next: "@popall" },
              },
            },
          ],
          [
            /\$[\w]+/,
            { cases: { '$S2=="': "variable", "@default": "string" } },
          ],
          [
            /["']/,
            {
              cases: {
                "$#==$S2": { token: "string", next: "@pop" },
                "@default": {
                  cases: {
                    "@eos": { token: "string", next: "@popall" },
                    "@default": "string",
                  },
                },
              },
            },
          ],
        ],
        herestring: [
          [
            /^\s*(["'])@/,
            {
              cases: {
                "$1==$S2": { token: "string", next: "@pop" },
                "@default": "string",
              },
            },
          ],
          [/[^\$`]+/, "string"],
          [/@escapes/, "string.escape"],
          [/`./, "string.escape.invalid"],
          [
            /\$[\w]+/,
            { cases: { '$S2=="': "variable", "@default": "string" } },
          ],
        ],
        comment: [
          [/[^#\.]+/, "comment"],
          [/#>/, "comment", "@pop"],
          [/(\.)(@helpKeywords)(?!\w)/, { token: "comment.keyword.$2" }],
          [/[\.#]/, "comment"],
        ],
      },
    });
});
